home *** CD-ROM | disk | FTP | other *** search
/ Ahoy 1985 January / Ahoy_Magazine_85-01_1985_Double_L.d64 / rupert #4 (.txt) < prev    next >
Commodore BASIC  |  2022-10-26  |  2KB  |  91 lines

  1. 0 rem << rr13-9 >>
  2. 1 rem =-=sprite controller=-=
  3. 2 rem
  4. 5 rem sprite data must already
  5. 6 rem be in memory.
  6. 9 rem
  7. 10 rem <>
  8. 11 rem <>  fnsb(n) and fnrb(n)
  9. 12 rem <>  are used to set/reset
  10. 13 rem <>  bit n of location m
  11. 14 rem <>  when used with a poke
  12. 15 rem <>  as follows:
  13. 16 rem <>    poke m, fnsb(n)
  14. 17 rem <>  or
  15. 18 rem <>    poke m, fnrb(n)
  16. 19 rem <>
  17. 20 def fnsb(n)=peek(m) or 2^n
  18. 30 def fnrb(n)=peek(m) and (255-2^n)
  19. 35 v=53248 :rem vic chip address
  20. 40 input"which sprite # (0..7)";sn
  21. 45 if sn<0 or sn>7 then 40
  22. 50 input"which memory block (192..199)";bk
  23. 55 if bk<192 or bk>199 then 50
  24. 60 gosub 500 :rem * set pointer
  25. 70 input"what x coordinate (0..511)";x
  26. 75 if x<0 or x>511 then 70
  27. 80 gosub 600 :rem * set x coord.
  28. 90 input"what y coordinate (0..255)";y
  29. 95 if y<0 or y>255 then 90
  30. 100 gosub 700 :rem * set y coord.
  31. 110 input"what color (0..15)";c
  32. 115 if c<0 or c>15 then 110
  33. 120 gosub 800 :rem * set color
  34. 130 print"press a key to turn sprite on"
  35. 140 get a$:if a$="" then 140
  36. 150 gosub 900 :rem * turn it on
  37. 160 print"press a key to turn sprite off"
  38. 170 get a$:if a$="" then 170
  39. 180 gosub 1000 :rem * turn it off
  40. 190 print"press any key"
  41. 200 get a$:if a$="" then 200
  42. 210 goto 2000 :rem * move sprite
  43. 495 rem=-=-=-=-=-=-=-=-=-=-=-=
  44. 496 rem= set sprite pointer  =
  45. 497 rem=-=-=-=-=-=-=-=-=-=-=-=
  46. 500 poke 2040+sn,bk
  47. 510 return
  48. 595 rem=-=-=-=-=-=-=-=-=-=-=-=
  49. 596 rem=  set x coordinate   =
  50. 597 rem=-=-=-=-=-=-=-=-=-=-=-=
  51. 600 m=v+16 : x0=x
  52. 610 if x<256 then poke m,fnrb(sn):goto 630
  53. 620 x0=x-256 : poke m,fnsb(sn)
  54. 630 poke v+sn*2,x0
  55. 640 return
  56. 695 rem=-=-=-=-=-=-=-=-=-=-=-=
  57. 696 rem=  set y coordinate   =
  58. 697 rem=-=-=-=-=-=-=-=-=-=-=-=
  59. 700 poke v+sn*2+1,y
  60. 710 return
  61. 795 rem=-=-=-=-=-=-=-=-=-=-=-=
  62. 796 rem=     set color       =
  63. 797 rem=-=-=-=-=-=-=-=-=-=-=-=
  64. 800 poke v+39+sn,c
  65. 810 return
  66. 895 rem=-=-=-=-=-=-=-=-=-=-=-=
  67. 896 rem=   turn sprite on    =
  68. 897 rem=-=-=-=-=-=-=-=-=-=-=-=
  69. 900 m=v+21
  70. 910 poke m,fnsb(sn)
  71. 920 return
  72. 995 rem=-=-=-=-=-=-=-=-=-=-=-=
  73. 996 rem=   turn sprite off   =
  74. 997 rem=-=-=-=-=-=-=-=-=-=-=-=
  75. 1000 m=v+21
  76. 1010 poke m,fnrb(sn)
  77. 1020 return
  78. 1994 rem=-=-=-=-=-=-=-=-=-=-=-=
  79. 1995 rem=     move sprite     =
  80. 1996 rem=-=-=-=-=-=-=-=-=-=-=-=
  81. 2000 x=24:y=150:dx=4:dy=2
  82. 2010 gosub 900
  83. 2020 x=x+dx : y=y+dy
  84. 2030 if x>320 then dx=-dx
  85. 2040 if x<24 then dx=-dx
  86. 2050 if y>229 then dy=-dy
  87. 2060 if y<50 then dy=-dy
  88. 2070 gosub 600 : gosub 700
  89. 2080 goto 2020
  90. 2090 next
  91.